import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

public class Mazo <T extends Carta> {
	
	private List<T> mazo;
	
	public Mazo(){
		this.mazo=new LinkedList<T>();
	}
	
	public List<T> getMazo() {
		return mazo;
	}

	public void setMazo(List<T> mazo) {
		this.mazo = mazo;
	}

	public T getCartaPorIndice(int indice) {
        T carta = this.mazo.get(indice);   
        return carta;
	}

	public void setCartaPorIndice(int indice, T cartaN){
		T cartaA = this.getCartaPorIndice(indice);
		cartaA.setCiudad(cartaN.getCiudad());
		cartaA.setColor(cartaN.getColor());
	}
	
	public T getCartaDeArriba() {
         T carta = this.mazo.get(0);    
         return carta;
	}
	
	public T getCartaDeAbajo() {
        T carta = this.mazo.get(this.MazoSize()-1);    
        return carta;
	}
	 
	//Mover la carta desde el mazo que lo invoca hasta el pasado como par�metro
	public void robaMazo(T carta, Mazo<T> mazo){
        this.addCarta(carta);
        mazo.removeCarta(carta);
	}
	
	public boolean removeCarta(T carta) {
		 boolean remove = this.mazo.remove(carta);
         return remove;
	}

	public boolean addCarta(T carta) {
		return mazo.add(carta);
	}
	
	public void baraja() {
         Collections.shuffle(this.mazo); 
	}

	public int MazoSize() {
		int n = this.mazo.size();
		return n;
	}
	
}
